package cn.lj.base.Controller;

import cn.lj.base.util.AjaxResult;
import cn.lj.base.util.FastDfsUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;


@RestController
@RequestMapping("/fastDfs")
@Api(tags = "文件上传和下载的接口",description = "文件上传和下载的接口")
public class FastDfsController {
    /*文件上传，文件三要素之post请求，调用FastDfs接口后会将文件上传到文件系统服务器
    留下文件的信息，我们需要将文件信息传递回前台*/
    /*@RequestPart(required = true,value = "file")
    * @RequestPart:文件
    * required = true：前台必须给我传递一个文件
    * value = "file"：通过file文字拿到前台传递的文件
    * */
    @PostMapping//文件上传三要素之post请求
    @ApiOperation(value = "文件上传",notes = "文件上传")
    public AjaxResult upload(@RequestPart(required = true,value = "file") MultipartFile file){
        try {
            //1.   拿到file字节码文件，用于调用FastDfs工具类的upload方法
            byte[] bytes = file.getBytes();
            //2.    拿到原始的文件名
            String filename = file.getOriginalFilename();
            //3.    截取到文件后缀
            String suffix_name = filename.substring(filename.lastIndexOf(".") + 1);
            //4.    调用工具类方法
            String filePath = FastDfsUtil.upload(bytes, suffix_name);
            //5.    返回给前台页面
            return AjaxResult.me().setData(filePath);

        }catch (Exception e) {
            e.printStackTrace();
            return AjaxResult.me().setAjaxResult(e.getMessage());
        }
    }
    /*
        http://47.95.117.210:8888:文件管理系统地址
        path:完整的路径/group1/M00/00/B2/rBE3kWD9ZlGAIc1bAAO18Y11ofc023.jpg
     */
    @DeleteMapping//当点击图片右上角时候删除图片
    @ApiOperation(value = "文件删除",notes = "文件删除")
    public AjaxResult delete(@RequestParam(required = true,value = "path")String path){
        try {
            //1.   通过path去除第一个/  从下标1开始截取字符串：group1/M00/00/B2/rBE3kWD9ZlGAIc1bAAO18Y11ofc023.jpg
            String substring = path.substring(1);
            //2.    获取文件管理系统中的组列  group1
            String groupNmae = substring.substring(0, substring.indexOf("/"));
            //3.    获取M00/00/B2/rBE3kWD9ZlGAIc1bAAO18Y11ofc023.jpg
            String suffix_name = substring.substring(substring.indexOf("/") + 1);
            //4.    调用工具类方法
            FastDfsUtil.delete(groupNmae, suffix_name);
            //5.    返回给前台页面
            return AjaxResult.me();
        }catch (Exception e) {
            e.printStackTrace();
            return AjaxResult.me().setAjaxResult(e.getMessage());
        }
    }
}
